package com.cool.shark.service;

import com.cool.shark.pojo.dto.OrderInserDto;
import com.cool.shark.pojo.vo.OrderStandardVo;
import com.cool.shark.pojo.vo.orderNumVo;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Name: OrderService
 * @Author: 西风残叶
 * @Date: 2024/4/29 23:06
 * @Version: 1.0
 * @TODO: 订单的服务
 */
@Transactional
public interface OrderService {
    /**
     * 将一个订单插入到数据库中。
     *
     * @param orderDto 需要插入的订单对象，包含订单的所有相关信息。
     *              该对象不应为空，否则会导致插入失败。
     *
     * @return 该方法没有返回值，订单插入操作的结果通常通过异常处理或日志记录来反馈。
     *         如果插入成功，通常会记录一条成功信息；如果插入失败，会抛出相应的异常。
     */
    void insert(OrderInserDto orderDto);

    /**
     * 获取订单标准视图列表。
     *
     * <p>该方法不接受任何参数，返回一个订单标准视图的列表。订单标准视图包含订单的基本信息，用于前端展示或进一步处理。
     *
     * @return 返回一个包含订单标准视图的列表。列表中的每个元素都代表一个订单的标准视图。
     */
    List<OrderStandardVo> list(Long userId);
    /**
     * 根据用户ID查询订单数量
     *
     * @param userId 用户的唯一标识符
     * @return 返回一个包含订单统计信息的列表，每个订单统计信息包含订单的各种标准字段
     */
    List<orderNumVo> orderNum(Long userId);
}
